"""@Project -> File   ：python -> 2021-12-08-python函数式编程
   @IDE    ：PyCharm
   @Author ：PengLinxi
   @Date   ：2021/12/8 17:47
"""

"""
# 1.利用map批量检测用户名是否符合规范=> username符合规范, username不符合规范
#  只能包含数据、字母、下划线，不以数字开头，长度在6-18之间
import re
username=['hkdfhakj','djhfj345',"123",'1uejd',"djf_ik","kdj$#*300000","qwertyhgfvfffffffffffffff"]
def func1(x):
    if len(x)<=16:
        if  re.findall("^[a-zA-Z_][a-zA-Z_0-9]{7,15}",x):
            return f"{x}符合规范"
        else:
            return f"{x}不符合规范"
    return f"{x}符合规范"
print(list(map(func1,username)))

"""


"""
# 2.filter把合法的用户名显示出来
import re
username=['hkdfhakj','djhfj345',"123",'1uejd',"djf_ik","kdj$#*300000","qwertyhgfvfffffffffffffff"]
def func2(x):
    if len(x)<=16:
        return  re.findall("^[a-zA-Z_][a-zA-Z_0-9]{7,15}",x)
    return 0
print(list(filter(func2,username)))

"""


"""
# 3.匿名函数+reduce实现 1*2*3*...*n
from functools import reduce
n=int(input("实现阶乘："))
print(reduce(lambda x,y:x*y,range(1,n+1)))
"""

"""
# 4.filter函数:找出[1-100]能被3整除的数
print(list(filter(lambda x:x%3==0,range(1,101))))
"""

"""
# 5.map函数:求list[1-10]各项的平方
print(list(map(lambda x:x**2,range(1,11))))
"""

"""
# 6.将列表[1,4,5,9] 转换成 '1459'的字符串
from functools import reduce

result = str(reduce(lambda x,y:x*10+y,[1,4,5,9]))
print(result,type(result))
"""

"""
# 有以下列表：list1=[7, -8, 5, 4, 0, -2, -5]
# 正数在前负数在后
# 正数从小到大
# 负数从大到小
def func3(x):
        if x>=0:
            return (False,x)
        else:
            return (True,abs(x))

list1 = [7, -8, 5, 4, 0, -2, -5]
print(sorted(list1,key=func3))


# list1=[7, -8, 5, 4, 0, -2, -5]
# print(sorted(list1, key=lambda x: x*-10  if x <= 0 else x))
"""


"""
# 这是一个字符串排序，排序规则：小写<大写<奇数<偶数
# s = 'asdf234GDSdsf23' #排序:小写-大写-奇数-偶数
# 原理：先比较元组的第一个值，FALSE
# lst = [(True,2),(1,2),(False,1,2),(False,2,1),(1,0,2),(True,0,1)]
# print(sorted(lst))



def func4(x):
    for i in x:
        if i.isdigit():
            if int(i)%2==0:
                return (True,True,i)
            else:
                return (True,False,i)
        else:
            if ord(i)>=97:
                return (False,False,i)
            else:
                return (False,True,i)

s = 'asdf234GDSdsf23'
print("".join(sorted(s,key=func4)))
"""



